package J21;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Scanner;

public class J21_BookDBMain {

	private static final String TITLE	= "-=도서프로그램=-";
	private static final String MENU	= "추가(a) 조회(b) 상세조회(c) 수정(d) 삭제(e) 종료(q)";
	private static final String SELMSG	= "상세조회할 책 번호 입력";
	private static final String ADDMSG	= "제목,출판사,저자 순으로 입력";
	private static final String MODMSG1	= "수정할 책 번호 입력";
	private static final String MODMSG2	= "수정할 책을  제목,출판사,저자 순으로 입력";
	private static final String DELMSG	= "삭제할 책 번호 입력 ";
	private static final String EXITMSG	= "도서프로그램 종료합니다";
	
	// 서비스 클래스, 키보드 입력 클래스는 
	// 객체 생성없이 바로 사용할 수 있도록
	// static 으로 선언
	private static J21_BookDBDAO srv = new J21_BookDBDAO();
	private static Scanner sc = new Scanner(System.in);
	
public static void main(String[] args) {
		
		while(true){
			System.out.println(TITLE);
			System.out.println(MENU);
			switch(sc.next()){
			case "a" : insertBookDB();
					break;
			case "b" : selectBookDB();
				    break;
			case "c" : selectoneBookDB();
					break;
			case "d" : updateBookDB();
					break;
			case "e" : deleteBookDB();
					break;
			case "q" : sc.close();
			System.out.println(EXITMSG);
			System.exit(0);
			break;
			}
		}
	}

	// Main 클래스에서 DAO클래스의 메서드를 
	//직접 호출하는 것은 OOP개념에 다소 위배
	// 캡슐화와 보안, 유지보수 관점에서 볼때
	// 서비스 객체를 하나 더 만들어
	// 그것을 통해 DAO클래스의 메서드를 
	// 호출하는것 더 나음
	
	// 즉, Main -> DAO 보다는
	// Main -> service -> DAO가 나음
	

	// DAO클래스의 메서드를 호출하는
	// 서비스 메서드를 static으로 선언
	private static void insertBookDB(){
		System.out.println(ADDMSG);
		J21_BookDBVO bvo = new J21_BookDBVO(sc.next(), sc.next(), sc.next());
		
		int cnt = srv.insertBookDB(bvo);
		if (cnt > 0) System.out.println(" 추가성공! ");
	}
	private static void selectBookDB(){
		System.out.println(srv.selectBookDB());
	}
	private static void selectoneBookDB(){
		System.out.println(srv.selectBookDB());
		System.out.println(SELMSG);
		String id = sc.next();
		System.out.println(srv.selectBookDB(id));
	}
	private static void updateBookDB(){
		System.out.println(srv.selectBookDB());
		System.out.println(MODMSG1);
		String id = sc.next();
		System.out.println(MODMSG2);
		J21_BookDBVO bvo = new J21_BookDBVO(sc.next(),sc.next(), sc.next());
		bvo.setId(id);
		
		if (srv.updateBookDB(bvo) > 0)
			System.out.println("성공적으로 데이터 수정됨!");
	}
	private static void deleteBookDB(){
		System.out.println(srv.selectBookDB());
		System.out.println(DELMSG);
		String id = sc.next();
		
		if( srv.deleteBookDB(id) > 0)
			System.out.println("성공적으로 데이터 삭제됨!");
	}
	

}




























